/*
 * Copyright 2017 HugeGraph Authors
 *
 * Licensed to the Apache Software Foundation (ASF) under one or more
 * contributor license agreements. See the NOTICE file distributed with this
 * work for additional information regarding copyright ownership. The ASF
 * licenses this file to You under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
 * WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
 * License for the specific language governing permissions and limitations
 * under the License.
 */

package com.baidu.hugegraph.entity.query;

import com.fasterxml.jackson.annotation.JsonProperty;

import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
public class GremlinResult {

    @JsonProperty("type")
    private Type type;
    @JsonProperty("json_view")
    private JsonView jsonView;
    @JsonProperty("table_view")
    private TableView tableView;
    @JsonProperty("graph_view")
    private GraphView graphView;

    public enum Type {

        EMPTY,

        GENERAL,

        VERTEX,

        EDGE,

        PATH;

        public boolean isEmpty() {
            return this == EMPTY;
        }

        public boolean isGeneral() {
            return this == GENERAL;
        }

        public boolean isVertex() {
            return this == VERTEX;
        }

        public boolean isEdge() {
            return this == EDGE;
        }

        public boolean isGraph() {
            return this == VERTEX || this == EDGE || this == PATH;
        }
    }
}
